//
//  ViewController.m
//  08-UITableView
//
//  Created by dllo on 16/7/25.
//  Copyright © 2016年 DM.C. All rights reserved.
//

#import "ViewController.h"
#import "UIView+Frame.h"
#define kTableViewReuse @"reuseIdentifier"
@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>
// 计数器
@property (nonatomic, assign) NSInteger numberCount;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 隐藏 Navigation
    self.navigationController.navigationBarHidden = YES;
    // 创建tableView
    [self createTableView];
    self.numberCount = 0;
}
#pragma mark - 创建tableView
- (void)createTableView {
    // 1.基本创建
    UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
    [self.view addSubview:tableView];
    // alwaysBounceVertical默认是YES, alwaysBounceVertical是scollView的属性, YES情况下它能使视图上下滚动.
    tableView.alwaysBounceVertical = YES;
    // 2.相关属性
    // 行高(默认是44)
    tableView.rowHeight = 200;
    // 预估行高度
//    tableView.estimatedRowHeight = 100;
    // 分割线颜色
    tableView.separatorColor = [UIColor redColor];
    // 分割线样式
    // 设置隐藏分割线 UITableViewCellSeparatorStyleNone
    // 默认: UITableViewCellSeparatorStyleSingleLine
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
//    // tableView的头视图
//    // headerView 的x和y不影响其位置
//    // 一般用来放轮播图, 个人资料等........
//    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 200)];
//    headerView.backgroundColor = [UIColor greenColor];
//    // 如果tableView要进行频繁修改, 必须加上 beginUpdates 和 endUpdates
//    [tableView beginUpdates];
//    tableView.tableHeaderView = headerView;
//    [tableView endUpdates];
//
//    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.dm_width, 400)];
//    [tableView beginUpdates];
//    tableView.tableFooterView = footerView;
//    [tableView endUpdates];
    // 3.数据显示
    // delegate 代理, 帮助tableView执行一些事件
    // dataSource 数据源 用来给tableView展示数据
    tableView.delegate = self;
    tableView.dataSource = self;
    // 通过这个方式, 隐藏tableView的空cell
    // 空cell一般出现在一个界面只显示几条数据时, 并且数据占不满整个屏幕
    tableView.tableFooterView = [[UIView alloc] init];
    // 注册cell
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kTableViewReuse];

}

#pragma mark - 返回每个section下的cell的个数(dataSource协议方法)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
}

#pragma mark - 返回的是cell(一般在这个代理方法里给cell赋值)(dataSource协议方法)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // cell的创建方式1: 直接创建
//     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
    
    // cell的创建方式2: 从重用池中取出对应标识的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
    // 如果从重用池中取出的cell为空, 创建一个新的cell
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
        _numberCount ++;
        NSLog(@"创建新的cell---%@---%ld", cell, _numberCount);
    } else {
        NSLog(@"重用旧的cell---%@", cell);
    }
    
    // cell 的创建方式3: 通过registerClass方式创建
    // 注意: cell注册出来的style是Default(没有副标题的那个)
    
    // cell的属性
    
    // cell style 的枚举项(四种)
//    UITableViewCellStyleSubtitle  主副标题上下紧挨, 主标题字号大, 副标题小
//    UITableViewCellStyleDefault cell默认的style, 没有副标题
//    UITableViewCellStyleValue1  最左边主标题(黑色), 最右边副标题(灰色).
//    UITableViewCellStyleValue2  小字号, 主标题(蓝色), 副标题(黑色),主副标题紧挨
//     cell 主标题
    cell.textLabel.text = @"大狗和二狗";
    // cell 副标题
    cell.detailTextLabel.text = @"的故事";
    // cell 的图片
    cell.imageView.image = [UIImage imageNamed:@"D2AD6E3E0B6FFE4963813D2A1EA24DC6"];
    return  cell;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
